package gov.mmgt.netmanager.ui.util;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;

/**
 * 
 * Copyright (c) 2014,茂名市国土资源局<br>
 * All rights reserved.<br>
 * 
 * 文件名称：UIUtil.java<br>
 * 摘    要：界面操作工具类<br>
 * <br>
 * 当前版本：<br>
 * 作    者：铭显 Email: <a href="mailto:liangmingxian@gmail.com">liangmingxian@gmail.com</a><br>
 * 完成日期：@since 2014-5-17<br>
 * <br>
 * 取代版本：<br>
 * 原作者  ：<br>
 * 完成日期：@since Oct 22, 2009<br>
 */
public class UIUtil {
	/**
	 * 
	 * 方法概述：鼠标拖动窗口
	 * 描述：鼠标拖动窗口
	 * @param window
	 * 返回类型：void
	 * 修改人：梁铭显
	 * 修改时间：2014-5-17
	 */
	public static void drag(final Shell window){
		Listener listener = new Listener() {
			int startX, startY;

			@Override
			public void handleEvent(Event e) {
				if (e.type == SWT.MouseDown && e.button == 1) {
					startX = e.x;
					startY = e.y;
				}
				if (e.type == SWT.MouseMove && (e.stateMask & SWT.BUTTON1) != 0) {
					Point p = window.toDisplay(e.x, e.y);
					p.x -= startX;
					p.y -= startY;
					window.setLocation(p);
				}
			}
		};
		window.addListener(SWT.MouseDown, listener);
		window.addListener(SWT.MouseMove, listener);
	}
	
	/**
	 * 
	 * 方法概述：窗口居中
	 * 描述：窗口居中
	 * @param window
	 * 返回类型：void
	 * 修改人：梁铭显
	 * 修改时间：2014-5-17
	 */
	public static void moveWinToMiddle(final Shell window) {
		int width = window.getMonitor().getClientArea().width;
		int height = window.getMonitor().getClientArea().height;
		int x = window.getSize().x;
		int y = window.getSize().y;
		if (x > width) {
			window.getSize().x = width;
		}

		if (y > height) {
			window.getSize().y = height;
		}

		window.setLocation((width - x) / 2, (height - y) / 2);
	}
}
